/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.eventos.bc;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.cip.esymons.eventos.be.InscripcionEventos;
import org.cip.esymons.general.be.PersonaNatural;

/**
 *
 * @author OscarA
 */
@Stateless
public class InscripcionEventosFacade implements InscripcionEventosFacadeLocal {
    @PersistenceContext
    private EntityManager em;

    public void create(InscripcionEventos inscripcionEventos) {
        em.persist(inscripcionEventos);
    }

    public void edit(InscripcionEventos inscripcionEventos) {
        em.merge(inscripcionEventos);
    }

    public void remove(InscripcionEventos inscripcionEventos) {
        em.remove(em.merge(inscripcionEventos));
    }

    public InscripcionEventos find(Object id) {
        return em.find(InscripcionEventos.class, id);
    }

    public List<InscripcionEventos> findAll() {
        return em.createQuery("select object(o) from InscripcionEventos as o").getResultList();
    }

    public InscripcionEventos buscarInscripcionEventoParticipante(Integer eve, Long per) throws Exception {

        try {
                return (InscripcionEventos) em.createQuery("select o from InscripcionEventos o where o.eveCodigo.preCodigo= ?1 AND o.perCodigo.solCodigo= ?2").setParameter(1, eve).setParameter(2, per).getSingleResult();

        } catch (Exception e) {
            throw new Exception("Error: aqui" + e.getMessage());
        }


    }

    //lizardo estuvo aqui
    public List<PersonaNatural> listarInscritos(Integer codEvento) {
        return em.createQuery("select per from InscripcionEventos ins join ins.preinscripcionEvento pre join pre.evento eve join pre.personaNatural per where eve.eveCodigo = ?1")
                .setParameter(1, codEvento)
                .getResultList();
    }

}
